Diese Frage hat hier bereits Antworten: Express js - kann nicht umleiten (4 Antworten) Vor 7 Jahren geschlossen. Ich verwende passportjs mit einer Middleware unten. Es wird angenommen, dass überprüft wird, ob sich der Benutzer anmeldet, wenn er bestimmte Dinge anfordert. Wenn er nicht angemeldet ist, sollte er zur Anmeldeseite weitergeleitet werden. Ich habe eine Anforderungsroute wie folgt: app.put ('/ fantasyteams /: fantasieteamId', auth.requiresLogin, fantasyteams.update); Diese Route wird aufgerufen, wenn der Benutzer versucht, eine Ressource namens Fantasy Team auf der Website zu aktualisieren auth.requiresLogin ist eine Middleware wie folgt: exports.requiresLogin = Funktion (req, res, next) { if (req.isAuthenticated ()) { kehre als nächstes zurück () }} return res.redirect ("/ signin"); }; Nachdem ich mich bei meinem Benutzer angemeldet hatte, simulierte ich den Sitzungsablauf, indem ich das Sitzungscookie löschte. Danach habe ich über die Website eine PUT '/ fantasyteams / 123'-Anfrage gestellt, um das Fantasy-Team Nummer 123 zu aktualisieren. fantasyteams.update ist einfach eine Mongodb / Mungo-Sicherungsoperation: exports.update = Funktion (req, res) { var fantasyteam = req.fantasyteam; Fantasieteam = _.extend (Fantasieteam, req.body); fantasyteam.save (Funktion (err) { res.jsonp (Fantasieteam); }); }; Wie erwartet hat der Routenhandler (app.put ...) oben die Anforderung abgefangen und an die Middleware auth.requiresLogin übergeben, um zu überprüfen, ob der Benutzer angemeldet ist. Es stellt sich also heraus, dass der Benutzer seit dem Löschen nicht angemeldet ist sein Sitzungscookie. res.redirect wird wie erwartet aufgerufen. Die Website leitet jedoch nicht zur Anmeldeseite weiter. Ich sehe dies in den Befehlsprotokollen von node.js: PUT / Signin 404 328ms Was habe ich falsch gemacht?
2021-02-25 08:20:54
Das Problem scheint zu sein, dass Sie keinen Routen-Handler für PUT / Signin haben. Die ursprüngliche Anfrage war ein Put. Wenn sie umgeleitet wird, ist sie immer noch Teil derselben Put-Anfrage vom Browser. Fügen Sie einfach einen Handler für put / post / was auch immer mit app.all hinzu ('/ signin') 3 | Nicht die Antwort, die Sie suchen? Durchsuchen Sie andere Fragen mit dem Tag "node.js". Sitzungscookies drücken passport.js aus oder stellen Sie Ihre eigene Frage.